Term Graphs for Imperative Programming Languages
نویسندگان
چکیده
Automatic differentiation is a technique for the rule-based transformation of a subprogram that computes some mathematical function into a subprogram that computes the derivatives of that function. Automatic differentiation algorithms are typically expressed as operating on a weighted term graph called a linearized computational graph. Constructing this weighted term graph for imperative programming languages such as C/C++ and Fortran introduces several challenges. Alias and definition-use information is needed to construct term graphs for individual statements and then combine them into one graph for a collection of statements. Furthermore, the resulting weighted term graph must be represented in a language-independent fashion to enable the use of AD algorithms in tools for various languages. We describe the construction and representation of weighted term graphs for C/C++ and Fortran, as implemented in the ADIC 2.0 and OpenAD/F tools for automatic differentiation.
منابع مشابه
Semantics of Parametric Polymorphism in Imperative Programming Languages
Programming languages such as CLU, Ada and Modula-3 have included facilities for parametric polymorphism and, more recently, C++ and Java have also added similar facilities. In this paper, we examine the issues of defining denotational semantics for imperative programming languages with polymorphism. We use the framework of reflexive graphs of categories previously developed for a general axiom...
متن کاملConcurrent Erlang Flow Graphs
Flow graphs are an important, and useful tool for testing programs or program components during software development. For imperative languages it is state of the art to use flow graph based coverage tools during the unit testing stage. Based on flow graphs for functional programming languages, that have to cope with higher order functions, a flow graph concept for Erlang needs a special treatme...
متن کاملTowards an Intermediate Language based on Graph Rewriting
Lean is an experimental language for specifying computations in terms of graph rewriting. It is based on an alternative to Term Rewriting Systems (TRS) in which the terms are replaced by graphs. Such a Graph Rewriting System (GRS) consists of a set of graph rewrite rules which specify how a graph may be rewritten. Besides supporting functional programming, Lean also describes imperative constru...
متن کاملGraph DSLs : A Survey on Green-Marl & Sparql
Many real world problems are formulated as graphs and standard graph processing algorithms are used to search solutions. Applications of graphs and related algorithms can be found in many domains. Domains vary from standard scientific applications to social media applications such as facebook. Creating and processing graphs in HPC environments adds lot of complexities. Hiding detail complexitie...
متن کاملUnder Consideration for Publication in J. Functional Programming Inductive Graphs and Functional Graph Algorithms
We propose a new style of writing graph algorithms in functional languages which is based on an alternative view of graphs as inductively deened data types. We show how this graph model can be implemented eeciently, and then we demonstrate how graph algorithms can be succinctly given by recursive function deenitions based on the inductive graph view. We also regard this as a contribution to the...
متن کامل